home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-08-18 | 5.2 KB | 154 lines | [TEXT/R*ch] |
- SML-MODE (3.3b) -- Major Emacs mode for editing Standard ML.
-
- 3.3(beta) because i really am looking at the indentation algorithm,
- but the new features mentioned below are stable -- modulo bugs.
-
- Files:
-
- sml-mode.el (SML mode elisp code)
- sml-proc.el (ML interaction code, defaults to SML/NJ(0.93))
- sml-hilite.el (hilit19 functions)
- sml-font.el (font-lock functions)
- sml-menus.el (Simple menus)
-
- sml-poly-ml.el (Additional library code to run Poly/ML)
- sml-mosml.el (Additional library code to run Moscow ML)
-
- sml-mode.info (Softcopy manual -- Info for (X)Emacs19)
- sml-site.el (Simple, system-wide installation)
-
- Extras:
-
- sml-mode.dvi (Hardcopy manual)
-
- Warning:
-
- Tried and sort of tested on GNU Emacs 19.3{3,4} and XEmacs 19.14.
-
- XEmacs 19.11 is known to hang on sending regions to the interaction
- buffer -- so leave the variable SML-TEMP-THRESHOLD = 0.
-
- System Installation Guide:
-
- If you're installing this for others in the Emacs hierarchy, either
-
- go to the site-lisp directory and unpack the tar file there,
-
- or create a subdirectory, say site-lisp/sml-mode, and copy at
- least the sml*.el files into it.
-
- In either case move or copy the file sml-site.el into the site-lisp
- directory itself (or some other place that's on the user's default
- load-path) and read and edit this file. All that's really needed is
- to ensure that Emacs can find the sml*.el files and the .info file.
-
- Tell your eager users to
-
- (requite 'sml-site)
-
- in their .emacses. Point them to the help file. At your option, byte
- compile the sml*.el files (and sml-site.el too, if you like).
-
- Private Installation Guide:
-
- If you are having to install his in your home directory, say, create
- a directory like "/home/xxx/lib/emacs/sml-mode", if your login name
- is xxx, and copy the sml-*.el files to there. Then put:
-
- (setq load-path (cons "/home/xxx/lib/emacs/sml-mode" load-path))
- (autoload 'sml-mode "sml-mode" "Major mode for editing ML programs." t)
-
- in your .emacs file. Add:
-
- (setq auto-mode-alist
- (append '(("\\.sml$" . sml-mode)
- ("\\.sig$" . sml-mode)
- ("\\.ML$" . sml-mode)) auto-mode-alist))
-
- to your .emacs so that whenever you visit a file with one of these
- extensions you will automatically be placed in sml-mode.
-
- Put the info file (sml-mode.info) somewhere convenient like
- "/home/xxx/lib/emacs/sml-mode/sml-mode.info", and add
-
- (setq sml-mode-info "/home/xxx/lib/emacs/sml-mode/sml-mode.info")
-
- again to your .emacs -- this gives access to on-line help. This help
- file gives lots of tips about configuring SML mode to suit your
- preferences: C-c C-i will get you there from SML mode.
-
- If you want SML mode to speak to Moscow ML or Poly/ML instead of
- SML/NJ, just add something like this to your .emacs:
-
- (defun my-mosml-setup () "Configure inferior SML mode for Moscow ML"
- (load-library "sml-mosml"))
- (add-hook 'inferior-sml-load-hook 'my-mosml-setup)
-
- so that when you M-x sml you'll get mosml instead.
-
- New in SML mode Version 3.3 (feedback welcomed on this):
-
- 1
-
- implemented some multi-frame handling capabilities, specifically so
- sml runs in a dedicated window. this is more complex than it needs to
- be because of XEmacs...
-
- the variable SML-DEDICATED-FRAME defaults to t if running under a
- window system; set it to nil in SML-LOAD-HOOK if you want the old
- split window behaviour back.
-
- 2
-
- debugged SML-NEXT-ERROR a bit, and improved it to echo the error
- message in the minibuffer (if possible) and highlight the region in
- which the error was found (if a suitable character range was given).
-
- the variable SML-ERROR-OVERLAY controls whether or not to highlight
- (default is yes); set this to nil in SML-MODE-HOOK to switch this
- off.
-
- SML-NEXT-ERROR won't always raise the inferior ML buffer's frame; it
- only does so if there's no window already showing the buffer, or if
- there's an error message it can't understand. i think!
-
- 3
-
- support for Moscow ML -- see sml-mosml.el.
-
- 4
-
- forms (aka, templates or macros) insertion semantics have changed
- because there were bugs. maybe there still are, but anyway: by
- default C-c C-m inserts the macro at point, C-u C-c C-m will do a
- newline-and-indent before inserting the macro.
-
- abstractions are history, and you can play with extending the
- collection of builtin macros to your heart's content. lookup the
- function SML-ADDTO-FORMS-ALIST, and the variable SML-FORMS-ALIST.
-
- 5
-
- drag-and-droppishness, without the drop: SML-DRAG-MOUSE is bound to
- M-S-down-mouse-1; if you drag the mouse over a region it will be
- magically sucked into the ML buffer (like C-c C-r, only you don't
- have to C-@ first). this might be flakey as it heavily depends on
- the underlying mouse-drag/track-mouse semantics of the various
- Emacses out there. can't do much about that, sorry.
-
- 6
-
- anything else i've forgotten already!
-
- To Do:
-
- 0
-
- indentation is hopeless for sequential code (semicolons). this needs
- attention; indeed all the indentation code does. Ian Zimmerman's very
- excellent (looking) indentation code for caml-mode may point the way
- forward. or we all go over to programming in Lisp instead of ML...
-
- Matthew Morley <mjm@scs.leeds.ac.uk>
- 05/97
-